POV-Ray : Newsgroups : povray.general : Request: deform : Request: deform Server Time
8 Aug 2024 10:22:54 EDT (-0400)
  Request: deform  
From: Rune
Date: 8 Jan 2001 17:07:41
Message: <3a5a3a2d@news.povray.org>
AFAIK meshes, bicubic patches and perhaps iso-surfaces can be transformed
nonlinearly. Or they could if there was functions in POV-ray that was
designed to do this...

I suggest that we begin to think of the possibilities of implementing such
functions. I personally believe that it could improve POV-Ray significantly
in some of the areas where it is currently not as powerful as many other
renderers.

To make such functions useable it would probably be necessary to implement
several different kinds of those nonlinearly transformations. They could all
be contained into a statement such as deform {} or something.

One type of deform could be one that deforms dependent on warps:

deform {
   warp {...}
}

As you can sure imagine, this alone would be a very powerful and general way
of deforming the supported object.

But more complicated ways of deforming may be useful. I have thought of a
feature that would deform objects by several user-specified regular
transforms, each weighted by a 3D field in space. I believe this could be
used for many things. For example it could be used to make a kind of bone
structure. One part of a mesh body could be enclosed by one field which
would be transformed by one linear transform. Another part of the body would
by due to another field be transformed by another linear transform. The
3D-fields could be defined by patterns, which would be very flexible, but
probably also rather difficult to master and somewhat slow, or they could be
controlled in a way similar to blobs, which would be less flexible, but
surely easier to understand, and probably faster. Possible syntax:

deform {
   field_transform {
      sphere {
         location, radius, strength,
         transformations (of the field)
         apply_transform transform_id (of the mother object, such as mesh)
      }
      cylinder { (like sphere, but with end1, end2 instead of location) }
      ...
   }
}

alternative way:

deform {
   field_transform {
      field {pattern_id, transform_id}
      field {pattern_id, transform_id}
      ...
   }
}

The pattern way of field_deform could be used with blob_pattern to achieve
same functionality I guess, but it would probably still be slower.

Other deform types could possible be made too. What do you think of the
whole idea?

Rune
--
\ Include files, tutorials, 3D images, raytracing jokes,
/ The POV Desktop Theme, and The POV-Ray Logo Contest can
\ all be found at http://rsj.mobilixnet.dk (updated January 6)
/ Also visit http://www.povrayusers.org


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.